import { forBindEventThis } from '../../../Func/forBindEventThis';
import { event_check } from '../../cla_event_check';
import { dialog_self_prop_eventBind_dialog } from '../DataDefine/sourceData';
import { dialog_dataMana } from './cla_dialog_dataMana';

const dialog_operateTag = 'dialog_operate';

const cur_event_check = new event_check();

/**
 * 这个是 在 使用到 焦点元素 时
 *
 * 需要 继承的 dialog_operate
 */
export class dialog_operate extends dialog_dataMana {
  get [Symbol.toStringTag]() {
    return dialog_operateTag;
  }

  constructor(spacename: string) {
    super(spacename);

    forBindEventThis(this, dialog_self_prop_eventBind_dialog);

    this.eventM.addEventListen(
      this.dom_dialog,
      'click',
      this[dialog_self_prop_eventBind_dialog].whiteSpace_click
    );
  }

  /**
   * 空白处 点击
   * @param event
   */
  async whiteSpace_click(event: MouseEvent) {
    // 如果 本身 点击
    if (!cur_event_check.set_cur_event(event).is_itself().result) {
      return;
    }

    if (this.whiteSpace_click_func_promise_before) {
      await this.whiteSpace_click_func_promise_before();
    }

    await this.close_view();

    if (this.whiteSpace_click_func_promise_after) {
      await this.whiteSpace_click_func_promise_after();
    }
  }
}
